$(function () {
    //      [
    //         {name: 'JavaScript', value: 100},
    //         {name: 'Python', value: 80},
    //         {name: 'Java', value: 70},
    //         // 添加更多词汇数据...
    //     ];
    let wordCloudData = []
    let chart_message='左图为vilipix上热度榜前500的作品的标签统计词云，由此词云可以看出，占比最多的标签主要为原创，女孩子，太美了等等，由此可见在vilipix拥有较高热度的作品一般为原创的女性就角色；其次拥有较高出现率的就是一些同人绘图，类似于VOCALID, 动漫，以及游戏的相关的角色；再其次就是一些外貌，装饰，动作，身份之类的描述词，例如黑发，水手服，回眸，高中生等等。可见具有热度的作品大多以同人作品，女性为主。'

    function generate_word_cloud(top_num) {
        axios({
            method: "get",
            url: "/ygy/data_out/tags_word_cloud/" + top_num,
            timeout: 20000
        }).then((resp) => {
            let res_data = resp.data
            if (res_data.status !== 1) {
                show_console('词云数据请求失败！')
                return
            }
            show_console(res_data.msg)
            wordCloudData = res_data.data.list
            console.log(wordCloudData)
            show_console(chart_message)
        }).then(() => {
            let myChart = echarts.init(document.getElementById('wordCloud'));

            let option = {
                series: [{
                    type: 'wordCloud',
                    gridSize: 20, // 网格尺寸，用于调整词云词语之间的间距
                    sizeRange: [12, 60], // 词语的字体大小范围
                    rotationRange: [-90, 90], // 词语的旋转角度范围
                    shape: 'circle', // 词云形状，可选值有'circle'、'cardioid'、'diamond'、'triangle-forward'、'triangle'等
                    textStyle: {
                        normal: {
                            color: function () {
                                return 'rgb(' + [
                                    Math.round(Math.random() * 255),
                                    Math.round(Math.random() * 255),
                                    Math.round(Math.random() * 255)
                                ].join(',') + ')';
                            }
                        }
                    },
                    data: wordCloudData
                }]
            };
            myChart.setOption(option);
        })

    }

    function show_console(message) {
        $('#console_output').val(message)
    }

    function add_images_element(base64_img_str) {
        let img_box = $('<div class="image-box">' +
            '<img src="data:image/png;base64,' + base64_img_str + '" alt="图片"></div>')
        $('#result').append(img_box)
    }

    function delete_all_images_element() {
        $('#result').empty()
    }

    function text2img() {
        let prompt_str = $('#prompts_input').val()
        let model_name = $('#selectModel').val()
        let gen_num = $('#selectGenNum').val()
        let gen_size = $('#selectSize').val()
        console.log(prompt_str, model_name, gen_num, gen_size)

        show_console('修改模型中')
        axios({
            headers: {
                'Content-Type': 'application/json',
            },
            method: "post",
            url: "/ygy/sd_api/set_model",
            data: {"model_idx": parseInt(model_name)},
            timeout: 60000
        }).then((resp) => {
            let res_data = resp.data
            console.log(res_data)
            if (res_data.status !== 1) {
                show_console(res_data.msg)
                return
            }
            show_console(res_data.msg)
        }).then(() => {
            show_console('图像生成中')
            let json_data = {
                "prompt": prompt_str,
                "gen_num": parseInt(gen_num),
                "gen_width": parseInt(gen_size.split('*')[0]),
                "gen_height": parseInt(gen_size.split('*')[1])
            }
            axios({
                headers: {
                    'Content-Type': 'application/json',
                },
                method: "post",
                url: "/ygy/sd_api/text2img",
                data: json_data,
                timeout: 20000
            }).then(function (resp) {
                let res_data = resp.data
                console.log(res_data)
                if (res_data.status !== 1) {
                    show_console(res_data.msg)
                    return
                }
                let base64_img_list = res_data.data.list
                delete_all_images_element()
                for (let i = 0; i < base64_img_list.length; i++) {
                    add_images_element(base64_img_list[i])
                }
                show_console(res_data.msg)
            })
        })
    }

    function getRandomInt(min, max) {
        // 使用 Math.random() 生成0到1之间的随机小数
        // 将随机小数映射到[min, max]范围内
        // 使用 Math.floor() 将结果取整
        return Math.floor(Math.random() * (max - min + 1)) + min;
    }

    function set_random_tag(tag_num) {
        let tags_len = wordCloudData.length
        let res_prompt = ''

        for(let i=0;i<tag_num;i++){
            res_prompt += ("," + wordCloudData[getRandomInt(0, tags_len - 1)].name)
        }
        console.log(res_prompt)
        $('#prompts_input').val(res_prompt)
    }

    $('#submit_btn').on('click', text2img)
    generate_word_cloud(500)
    $('#tags_set_btn').on('click', ()=>{
        set_random_tag(15)
    })


});